<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

/**
 * Trieda určená na overenie či zadané prihlasovacie údaje používateľa su zhodné s údajmi v databáze.
 * 
 * @author Michal Foltin
 */
class Login_model extends CI_Model {

    function __construct() {
        parent::__construct();
    }

    /**
     * Metóda overí správnosť prihlasovacích údajov.
     * 
     * @param array $iData - pole obsahujúce prihlasovacie údaje používateľa; asociatívne pole array(username, password).
     * password je tvaru SHA1 sifry
     * @return mixed - vráti false ak sú prihlasovacie údaje nesprávne, inak vráti pole obsahujúce informácie o prihlásenom používateľovi
     * asociatívne pole: array (user_id, first_name, surname, department, user_type, username, isAdmin)
     */
    function verifyLogin($iData) {
        if (!isset($iData['username']) || !isset($iData['password'])) {
            return false;
        } else {
            $sql = "SELECT u.id, u.first_name, u.surname, u.department, ut.user_type, ul.username, ul.isAdmin
                FROM user_login ul
                INNER JOIN user_info u ON u.id = ul.user_id
                INNER JOIN user_type ut ON ut.id = u.user_type
                WHERE ul.username = '" . $iData['username'] . "' AND ul.password = '" . $iData['password'] . "';";

            $getLogin = $this->db->query($sql);
            if ($getLogin->num_rows() > 0) {
                $oData = array(
                    'logged_in' => 1,
                    'user_id' => $getLogin->row()->id,
                    'first_name' => $getLogin->row()->first_name,
                    'surname' => $getLogin->row()->surname,
                    'department' => $getLogin->row()->department,
                    'user_type' => $getLogin->row()->user_type,
                    'username' => $getLogin->row()->username,
                    'isAdmin' => $getLogin->row()->isAdmin
                );
                return $oData;
            } else {
                return false;
            }
        }
    }

}

?>